package com.mf.service.upload;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mf.entity.bo.BasicResourceFileBo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mf.entity.request.upload.FileFindPageListReq;
import com.mf.entity.request.upload.FileInitSliceDataReq;
import com.mf.entity.request.upload.FileUploadFileReq;
import com.mf.entity.vo.BasicFileVo;
import org.springframework.core.io.InputStreamResource;
import org.springframework.http.ResponseEntity;

import java.util.List;

/**
 * 文件表 服务类
 *
 * @author mf
 * @since 2024-11-20
 */
public interface IBasicResourceFileService extends IService<BasicResourceFileBo> {
    /**
     * 新增ResourceFile数据
     *
     * @param resourceFile 实例对象
     * @return 实例对象
     */
    Boolean insertFile(BasicResourceFileBo resourceFile);

    Integer checkIsExistFile(FileInitSliceDataReq fileInitSliceDataReq);

     /**
     * 根据数据字典类型验证是否有查看|预览权限
     */
    void checkPermission(String type);

    /**
     * 更新数据库文件为已上传
     *
     * @return 实例对象
     */
    Boolean updateFileUploadState(FileUploadFileReq fileUploadFileReq);

    /**
     * 获取文件
     */
    ResponseEntity<InputStreamResource> getMinioFile(BasicResourceFileBo basicResourceFileBo);

    /**
     * 文件列表查询
     */
    Page<BasicFileVo> findPageList(FileFindPageListReq fileFindPageListReq);



    /**
     * 文件预览
     */
    ResponseEntity<InputStreamResource> previewById(Integer id,String fileToken);

    /**
     * 获取预览图片权限
     */
    String getFileToken(Integer id);

    /**
     * 根据id查询文件
     */
    BasicResourceFileBo selectById(Integer id);

    /**
     * 批量获取图片权限
     */
    List<String> bachGetFileToken(String ids);

}
